import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { viteMockServe } from 'vite-plugin-mock'
import VueSetupExtend from "vite-plugin-vue-setup-extend"
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"

export default defineConfig({
  plugins: [
    vue(),
    VueSetupExtend(), // setup语法糖扩展插件，在setup上自定义name
    AutoImport({
      imports: ["vue", "vue-router", "pinia"], // 自动导入vue,vue-router,pinia相关函数。如：ref,reactive,toRef等
      resolvers: [ElementPlusResolver()], // 自动导入Element Plus相关函数
      dts: false, // 指定ts类型文件的生成位置(false:关闭自动生成) 默认在根目录下生成 auto-imports.d.ts
    }),
    Components({
      resolvers: [ElementPlusResolver()], // 自动导入 Element Plus 组件
      dts: false, // 指定ts类型文件的生成位置(false:关闭自动生成) 默认在根目录下生成 components.d.ts
    }),
    createSvgIconsPlugin({
      iconDirs: [path.resolve(process.cwd(), "src/assets/icons/svg")], // 本地svg图标存放路径
      symbolId: "icon-[dir]-[name]", // 指定symbolId格式
    }),
    viteMockServe({
      mockPath: "./mock", // mock数据所在的目录 ./mock代表和vite.config.js同级目录即根目录
      // localEnabled: false, // 设置为 false 将禁用 mock 功能, 不要在生产环境中打开它
      logger: true, // 是否在控制台显示请求日志
    })
  ],
  server: {
    port: 80,
    open: false, // 启动后是否在浏览器自动打开
    proxy: {
      "/api": {
        target: "http://localhost:9090",
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
    }
  },
  resolve: {
    extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
    alias: {
      "@": path.resolve(__dirname, "./src")
    },
  },
  css: {}
})
